<template>
	<view class="content b-t">
		<!-- #ifdef MP-WEIXIN -->
		<view class="order-content" @click="toChooseWxAddress">
			<text class="i-tabbar-icons icon-s" style="color: #04BE02;margin-left: 15px;">&#xe679;</text>
			<view class="cen">
				<view style="margin-left: 10px;">
					<text style="font-size: 14px;color:#808080;">获取微信收货地址</text>
				</view>
			</view>
			<text class="yticon icon-you" style="color:#808080;margin-right: 10px;"></text>
		</view>
		<!-- #endif -->
		<view class="list b-b" v-for="(item, index) in addressList" :key="index">
			<view class="wrapper">
				<view class="address-box" @click="checkAddress(item)">
					<text v-if="item.default==true" class="tag">默认</text>
					<text class="address">{{item.addressName}} {{item.area}}</text>
				</view>
				<view class="u-box" @click="checkAddress(item)">
					<text class="name">{{item.name}}</text>
					<text class="mobile">{{item.mobile}}</text>
				</view>
				<view style="display: inline-block;position: absolute;margin-left: 580rpx;">
					<uni-icons type="compose" color="#8f8f94" size="20" @click="toEdit('edit',item)" />
					<uni-icons style="margin-left: 20rpx;" type="trash" color="#8f8f94" size="20" @click="toDel(item.id)" />
				</view>
			</view>
		</view>
		<text style="display:none;padding: 16upx 30upx 10upx;lihe-height: 1.6;color: #FF6146;font-size: 24upx;">
			重要：添加和修改地址回调仅增加了一条数据做演示，实际开发中将回调改为请求后端接口刷新一下列表即可
		</text>

		<button class="add-btn" @click="addAddress('add')">新增地址</button>
	</view>
</template>

<script>
	import {
		getDataById,
		addData,
		delData
	} from '@/common/api/address.js'
	import myConst from '@/common/util/const.js';
	import {
		genID
	} from '@/common/util/util.js';
	import uniIcons from '@/components/uni-ui/uni-icons/uni-icons.vue'
	import {
		mapState
	} from 'vuex';
	export default {
		components: {
			uniIcons
		},
		data() {
			return {
				source: 0,
				addressList: [],
				addressData: {
					id: '',
					name: '',
					mobile: '',
					addressName: '',
					address: '',
					area: '',
					default: false
				}
			}
		},
		onLoad(option) {
			this.source = option.source;

		},
		onShow() {
			this.getData()
		},
		computed: {
			...mapState(['userId'])
		},
		methods: {
			async getData() {
				const data = {
					userId: this.userId
				}
				const res = await getDataById(data)
				if (res.length > 0)
					this.addressList = res[0].data
			},
			//选择地址
			checkAddress(item) {
				if (this.source == 1) {
					//this.$api.prePage()获取上一页实例，在App.vue定义
					this.$api.prePage().addressData = item;
					uni.navigateBack()
				}
			},
			addAddress(type, item) {
				uni.navigateTo({
					url: `/pages/address/address-edit?type=${type}&data=${JSON.stringify(item)}`
				})
			},
			toEdit(type, item) {
				uni.navigateTo({
					url: `/pages/address/address-edit?type=${type}&data=${JSON.stringify(item)}`
				})
			},
			async toDel(id) {
				const data = {
					userId: this.userId,
					addressId: id,
					updatetime: new Date().getTime
				}
				const res = await delData(data)
				uni.showToast({
					title: '删除成功',
					icon: 'none'
				})
				this.getData();
				this.$api.prePage().addressData = [];
			},
			toChooseWxAddress() {

				var that = this;
				
				uni.chooseAddress({
					success(res) {
						if (res.errMsg == 'chooseAddress:ok') {
							console.log(that.addressData)
							that.addressData.id = genID()
							that.addressData.name = res.userName;
							that.addressData.mobile = res.telNumber;
							that.addressData.addressName = res.provinceName + res.cityName + res.countyName;
							that.addressData.address = res.provinceName + res.cityName + res.countyName;
							that.addressData.area = res.detailInfo;
							that.addressData.default = false;
						}
						that.toAddData()
						
					}
				})
			},
			async toAddData(){
				var that = this
				const data = {
					userId: that.userId,
					addressData: that.addressData,
					updatetime: new Date().getTime
				}
				const res = await addData(data)
				uni.showToast({
					title: '提交成功',
					icon: 'none'
				});
				setTimeout(() => {
					that.$api.prePage().addressData = that.addressData;
					uni.navigateBack()
				}, 800)
			}
		}
	}
</script>

<style lang='scss'>
	page {
		padding-bottom: 120upx;
	}

	.icon-s {
		font-size: 18px;
		font-family: iconfont;
		color: #666666;
	}

	.content {
		position: relative;
	}

	.list {
		display: flex;
		align-items: center;
		padding: 20upx 30upx;
		;
		background: #fff;
		position: relative;
	}

	.wrapper {
		display: flex;
		flex-direction: column;
		flex: 1;
	}

	.address-box {
		display: flex;
		align-items: center;

		.tag {
			font-size: 24upx;
			color: $base-color;
			margin-right: 10upx;
			background: #fffafb;
			border: 1px solid #ffb4c7;
			border-radius: 4upx;
			padding: 4upx 10upx;
			line-height: 1;
		}

		.address {
			font-size: 30upx;
			color: $font-color-dark;
		}
	}

	.u-box {
		font-size: 28upx;
		color: $font-color-light;
		margin-top: 16upx;

		.name {
			margin-right: 30upx;
		}
	}

	.icon-bianji {
		display: flex;
		align-items: center;
		height: 80upx;
		font-size: 40upx;
		color: $font-color-light;
		padding-left: 30upx;
	}

	.add-btn {
		position: fixed;
		left: 30upx;
		right: 30upx;
		bottom: 16upx;
		z-index: 95;
		display: flex;
		align-items: center;
		justify-content: center;
		width: 690upx;
		height: 80upx;
		font-size: 32upx;
		color: #fff;
		background-color: $base-color;
		border-radius: 10upx;
		box-shadow: 1px 2px 5px rgba(219, 63, 96, 0.4);
	}

	.order-content {
		display: flex;
		align-items: center;
		height: 36px;
		background-color: #F5F5F5;
	}

	.icon-shouhuodizhi {
		flex-shrink: 0;
		display: flex;
		align-items: center;
		justify-content: center;
		width: 90upx;
		color: #888;
		font-size: 44upx;
	}

	.cen {
		display: flex;
		flex-direction: column;
		flex: 1;
		font-size: 28upx;
		color: $font-color-dark;
	}
</style>
